import { http } from "@/utils/http";

// 保养计划信息接口类型
export interface MaintenancePlan {
  id?: number;
  tenantId?: number; // 租户ID
  equipmentId?: number; // 设备ID
  maintenanceProject: string; // 保养项目
  startTime: string; // 开始时间
  endTime: string; // 结束时间
  estimatedCost?: number; // 预计费用
  maintenanceCycle?: string; // 保养周期
  maintenanceLevel: string; // 保养级别
  isDeleted?: number; // 是否删除
  status: number; // 状态
  responsiblePerson: string; // 负责人
  createTime?: string; // 创建时间
  updateTime?: string; // 更新时间
}

// 保养计划VO接口类型
export interface MaintenancePlanVo {
  id?: number;
  deviceName?: string; // 设备名称
  deviceCode?: string; // 设备编码
  maintenanceProject?: string; // 保养项目
  maintenanceLevel?: string; // 保养级别
  remark?: string; // 备注
  estimatedCost?: number; // 预计费用
  responsiblePerson?: string; // 负责人
  status?: number; // 状态
}

// 保养计划查询参数接口
export interface MaintenancePlanQuery {
  page?: number;
  limit?: number;
  keyword?: string; // 设备名称/编码搜索
  [key: string]: any;
}

// 保养计划添加参数接口
export interface MaintenancePlanAdd {
  equipmentId: number; // 设备ID
  startTime: string; // 开始时间
  maintenanceProject: string; // 保养项目
  maintenanceLevel: string; // 保养级别
  remark?: string; // 备注
  endTime: string; // 结束时间
  estimatedCost: number; // 预计费用
  maintenanceCycle?: string; // 保养周期
  responsiblePerson: string; // 负责人
}

// 保养计划更新参数接口
export interface MaintenancePlanUpdate {
  id: number; // 保养计划ID
  equipmentId: number; // 设备ID
  startTime: string; // 开始时间
  maintenanceItem: string; // 保养项目
  maintenanceLevel: string; // 保养级别
  remark?: string; // 备注
  endTime: string; // 结束时间
  estimatedCost: number; // 预计费用
  responsiblePerson: string; // 负责人
}

// 保养计划执行参数接口
export interface MaintenancePlanExecute {
  id: number; // 保养计划ID
  maintenanceProject?: string; // 保养项目
  actualCost?: number; // 实际费用
  executor: string; // 执行人
  remark?: string; // 执行备注
}

// 分页响应接口
interface PageResponse<T> {
  total: number;
  list: T[];
}

// 保养计划列表响应
export interface MaintenancePlanListResponse {
  code: number;
  data: PageResponse<MaintenancePlanVo>;
  message: string;
}

// 保养计划详情响应
export interface MaintenancePlanDetailResponse {
  code: number;
  data: MaintenancePlan;
  message: string;
}

// 通用响应接口
export interface ApiResponse<T = any> {
  code: number;
  data?: T;
  message: string;
}

// 获取保养计划列表
export const getMaintenancePlanList = (params?: MaintenancePlanQuery) => {
  return http.post<MaintenancePlanListResponse, MaintenancePlanQuery>(
    "/maintenancePlan/list",
    {
      data: params
    }
  );
};

// 获取保养计划详情
export const getMaintenancePlanDetail = (id: number) => {
  return http.get<MaintenancePlanDetailResponse, { id: number }>(
    "/maintenancePlan/info",
    {
      params: { id }
    }
  );
};

// 添加保养计划
export const addMaintenancePlan = (data: MaintenancePlanAdd) => {
  return http.post<ApiResponse, MaintenancePlanAdd>("/maintenancePlan/add", {
    data
  });
};

// 更新保养计划
export const updateMaintenancePlan = (data: MaintenancePlanUpdate) => {
  return http.request<ApiResponse>("put", "/maintenancePlan/update", {
    data
  });
};

// 删除保养计划
export const deleteMaintenancePlan = (id: number) => {
  return http.request<ApiResponse>("delete", "/maintenancePlan/delete", {
    params: { id }
  });
};

// 批量删除保养计划
export const batchDeleteMaintenancePlan = (ids: number[]) => {
  return http.request<ApiResponse>("delete", "/maintenancePlan/deleteByBatch", {
    data: { ids }
  });
};

// 执行保养计划
export const executeMaintenancePlan = (data: MaintenancePlanExecute) => {
  return http.post<ApiResponse, MaintenancePlanExecute>(
    "/maintenancePlan/execute",
    {
      data
    }
  );
};
